<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // const fn1 = function(){

        // }
        // 栈内存开辟空间 起名叫fn1 
        // 堆内存开辟一个空间 
        // 把函数体内的代码一模一样复制进去
        // 把堆内存的地址 给到 fn1 的空间中  

        // 对象中的函数 

        // const person = {
        //     eat:function(){},
        //     sport:function(){}
        // }

        // 上面定义了两个函数  
        // 在堆内存 开辟两个空间  
        let count = 0;
        function fn1(){
            count++
            const f2 = function(){
                console.log(count);
            }
            f2()
        }
        fn1();
        fn1();
        fn1();
        fn1();

        // 函数调用了 4次
        // 每次调用 都会 在堆内存开辟一个空间  给到 f2 
        // 开了四次空间 


        function Person(name,age){
            this.name = name;
            this.age = age;
            this.eat = function(){
                console.log(this.name+'正在吃');
            }
        }


        const obj1 = new Person('张三',18);
        const obj2 = new Person('李四',28);
        const obj3 = new Person('王五',38);
        

        //每次实例化对象 
        // 调用Person 
        //会将一个 匿名函数给到 对象的eat键 
        // 这个过程会在堆内存开辟一个函数空间 (实例化对象就得开辟一个函数空间)
        // 创建10个对象就得开辟10个空间  

        // 创建100个对象 就得开辟 100个空间

        // 如何节约空间?


        // 能不能 只开辟一个函数空间 每个创建的新对象 共用这一个空间?

        // 使用原型 就可以解决  

        console.dir(Person);
        console.dir(obj1);




    </script>
</body>
</html>